package com.helin.helinhealth.service;

import com.helin.helinhealth.dto.ExportRequest;
import com.helin.helinhealth.dto.ExportResponse;
import com.helin.helinhealth.entity.ExportTask;
import org.springframework.http.ResponseEntity;

/**
 * 数据导出服务接口
 */
public interface ExportService {
    
    /**
     * 创建导出任务
     * 
     * @param request 导出请求
     * @return 导出响应
     */
    ExportResponse createExportTask(ExportRequest request);
    
    /**
     * 获取导出任务状态
     * 
     * @param taskId 任务ID
     * @return 导出任务
     */
    ExportTask getExportTaskStatus(Long taskId);
    
    /**
     * 获取导出文件下载URL
     * 
     * @param taskId 任务ID
     * @return 下载URL
     */
    String getDownloadUrl(Long taskId);
    
    /**
     * 获取导出文件的字节内容
     * 
     * @param filePath 文件路径
     * @return 文件内容字节数组
     */
    byte[] getExportFileContent(String filePath);

    /**
     * 下载导出文件
     * 
     * <p>
     * 根据任务ID获取并下载对应的导出文件。
     * </p>
     * 
     * @param taskId 任务ID
     * @return 文件内容响应体
     */
    ResponseEntity<byte[]> downloadFile(Long taskId);
    
    /**
     * 清理过期的导出文件
     * 
     * <p>
     * 根据配置的文件保留天数，删除过期的导出文件和对应的缓存记录。
     * 返回删除的文件数量。
     * </p>
     * 
     * @param days 文件保留天数，如果为null则使用系统配置的默认值
     * @return 删除的文件数量
     */
    int cleanupExportFiles(Integer days);
    
    /**
     * 清理内存缓存
     * 
     * <p>
     * 清除导出任务的内存缓存
     * </p>
     * 
     * @return 清理的缓存记录数
     */
    int clearCache();
} 